function PageB1RemindAssignee(user, sd, options) {
  this._user = user;
  this._sd = sd;
  this._options = (options) ? options : null;
  
  this._gui = { content: document.getElementById('container') };
  
  this._createElements();
};

PageB1RemindAssignee.joint = DlmanageUtils.order + ' ' + DlmanageUtils.task + ' ' + DlmanageUtils.user + ' ' + DlmanageUtils.status2;
PageB1RemindAssignee.condition = 's.state = 3';
PageB1RemindAssignee.order = 's.date';
PageB1RemindAssignee.queue = 'ASC';

PageB1RemindAssignee.prototype._createElements = function() {
  this._loadData();
};

PageB1RemindAssignee.prototype._loadData = function() {
  this._customers = null;
  this._customerParams = null;
  this._retrieveCustomers(1);
};

PageB1RemindAssignee.prototype._verifyData = function() {
  if (this._customers) {
    this._updateElements();
  }
};

PageB1RemindAssignee.prototype._retrieveCustomers = function(page) {
  var _self = this;
  var args = 'j=' + PageB1RemindAssignee.joint + '&c=' + PageB1RemindAssignee.condition + '&p=' + page  + '&s={{$smarty.const.SIZE|escape:javascript}}' + '&o=' + PageB1RemindAssignee.order  + '&q=' + PageB1RemindAssignee.queue;
  new RequestUtils()._custom('customers', args, function(result, params) { _self._customers = result.data;
                                                                           _self._customerParams = result;
                                                                           _self._verifyData.call(_self);
                                                                         }, null);
};

PageB1RemindAssignee.prototype._updateElements = function() {
  var table, tr, td, _self = this;

  DOMUtils.removeChildElements(this._gui.content);
  
  var p = document.createElement('p');
  this._gui.content.appendChild(p);
  Pagination.makePagedResults(p, this._customerParams.page, this._customerParams.total, this._customerParams.size, function(page) { _self._retrieveCustomers.call(_self, page); }, this, document);
  
  table = document.createElement('table');
  this._gui.content.appendChild(table);
  
  for (var i = 0, il = this._customers.length; i < il; i++) {
    var customer = this._customers[i];
    
    tr = table.insertRow(-1);
    new TrProgress(tr, customer, function() { location.reload(); }, { photographer: true, videographer: true, makeup: true, now: this._sd, registrar: this._user, validate: function(customer) { return (DlmanageUtils.pleft(customer, 3) || DlmanageUtils.vleft(customer, 3) || DlmanageUtils.mleft(customer, 3)); } });
  }
};
